﻿using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;

namespace Pong
{
    class Bola : Objetos
    {
        private float aceleracao = 0.15f;
        private SoundEffect soundEffect;

        public Bola( SoundEffect soundEffect )
        {
            this.soundEffect = soundEffect;
        }

        public float Aceleracao
        {
            get { return aceleracao; }
        }


        /// <summary>
        /// Move a bola
        /// </summary>
        /// <param name="gw"></param>
        /// <param name="pontosPlayer1"></param>
        /// <param name="pontosPlayer2"></param>
        public void mover(GameWindow gw, ref int pontosPlayer1, ref int pontosPlayer2)
        {
            this.Posicao += new Vector2(Velocidade.X, Velocidade.Y);

            if (this.Posicao.X <= 0)
            {
                pontosPlayer2++;
                this.Velocidade *= new Vector2(-1, 1);
            }
            if (this.Posicao.X >= gw.ClientBounds.Width - this.Textura.Width)
            {
                pontosPlayer1++;
                this.Velocidade *= new Vector2(-1, 1);
            }
            if (this.Posicao.Y < 0 || this.Posicao.Y >= (gw.ClientBounds.Height - this.Textura.Height))
                this.Velocidade *= new Vector2(1, -1);

        }

        /// <summary>
        /// Checa a colisão
        /// </summary>
        /// <param name="jogador1"></param>
        /// <param name="jogador2"></param>
        public void checaColisao(Rectangle jogador1, Rectangle jogador2)
        {
            /*Versao Lusitana
            bool colidiu = false;

            if (this.Velocidade.X < 0)
            {
                colidiu = this.Retangulo.Left < jogador1.Right &&
                             this.Retangulo.Right > jogador1.Left &&
                             this.Retangulo.Top < jogador1.Bottom &&
                             this.Retangulo.Bottom > jogador1.Top;
            }
            else
            {
                colidiu = this.Retangulo.Left < jogador2.Right &&
                             this.Retangulo.Right > jogador2.Left &&
                             this.Retangulo.Top < jogador2.Bottom &&
                             this.Retangulo.Bottom > jogador2.Top;
            }

            if (colidiu)
            {
                //Muda a direção
                this.Velocidade *= new Vector2(-1, 1);
                this.soundEffect.Play();
            }
             
             */

            /* Versão Otimizada */
            if (this.Retangulo.Intersects(jogador1) || this.Retangulo.Intersects(jogador2))
            {
                //Muda a direção
                this.Velocidade *= new Vector2(-1, 1);
                this.soundEffect.Play();
            }

        }
    }
}